package com.cedancp.hometrade;

import java.util.ArrayList;

import org.json.JSONException;
import org.json.JSONObject;

import com.cedancp.hometrade.AddPublicacion.registrarPub;
import com.cedancp.hometrade.DetallePublicacion.GetImage;
import com.cedancp.hometrade.DetallePublicacion.GetPublicacion;

import library.UserFunctions;
import android.os.AsyncTask;
import android.os.Bundle;
import android.app.Activity;
import android.app.ProgressDialog;
import android.content.Intent;
import android.graphics.Bitmap;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;

public class EditPubicacion extends Activity {
	
	String cod_publicacion;
	Button btn_cambiarImg;
	Button btn_guardar;
	ImageView imgView;
	ProgressDialog pDialogo;
	TextView txv_titulo;
	TextView txv_precio;
	TextView txv_descripcion;
	TextView txv_direccion;
	UserFunctions userFunction=new UserFunctions();

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_edit_pubicacion);
		cod_publicacion=getIntent().getExtras().getString("cod_publicacion");
		btn_cambiarImg=(Button) findViewById(R.id.btn_cambiarImg);
		btn_guardar=(Button) findViewById(R.id.btn_guardar);
		imgView=(ImageView) findViewById(R.id.imgViewEdit);
		txv_titulo=(TextView) findViewById(R.id.txt_tituloEdit);
		txv_precio=(TextView) findViewById(R.id.txt_precioEdit);
		txv_descripcion=(TextView) findViewById(R.id.txt_descripcionEdit);
		txv_direccion=(TextView) findViewById(R.id.txt_direccionEdit);
		
		new GetPublicacion().execute(cod_publicacion);
		new GetImage().execute(cod_publicacion);
		
		btn_cambiarImg.setOnClickListener(new View.OnClickListener() {
			
			@Override
			public void onClick(View v) {
				Intent i=new Intent(getApplicationContext(),UploadImage.class);
				i.putExtra("cod_publicacion", cod_publicacion);
				i.putExtra("tipo", "cambiar");
				startActivity(i);
			}
		});
		
		btn_guardar.setOnClickListener(new View.OnClickListener() {
			
			@Override
			public void onClick(View v) {
				String titulo=txv_titulo.getText().toString();
				String precio=txv_precio.getText().toString();
				String descripcion=txv_descripcion.getText().toString();
				String direccion=txv_direccion.getText().toString();
				
				ArrayList<String> params = new ArrayList<String>();
				params.add(cod_publicacion);
				params.add(titulo);
				params.add(precio);
				params.add(descripcion);
				params.add(direccion);
				
				new editarPub().execute(params);
				
			}
		});
	}

	@Override
	public boolean onCreateOptionsMenu(Menu menu) {
		// Inflate the menu; this adds items to the action bar if it is present.
		getMenuInflater().inflate(R.menu.edit_pubicacion, menu);
		return true;
	}
	
	//Creando los eventos de las opciones de menu
		@Override
	    public boolean onOptionsItemSelected(MenuItem item){
			UserFunctions userFunction= new UserFunctions();
	    	switch (item.getItemId()) {
			case R.id.mnu_salir:
				if(userFunction.logoutUser(getApplicationContext())){
					Intent mainActivity=new Intent(getApplicationContext(), MainActivity.class);
					mainActivity.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
					startActivity(mainActivity);
				}
				
				return true;
				
			case R.id.mnu_cuenta:
					Intent iCuenta =new Intent(getApplicationContext(), AdministrarCuenta.class);
					startActivity(iCuenta);
					return true;
					
			case R.id.acercaDe:
				Intent iAcercaDe = new Intent(getApplicationContext(), AcercaDe.class);
				startActivity(iAcercaDe);
				return true;
				
			case R.id.mnu_publicar:
				Intent intent =new Intent(getApplicationContext(), AddPublicacion.class);
				startActivity(intent);
				return true;
			
			case R.id.mnu_busqueda:
				Intent iBuscar =new Intent(getApplicationContext(), BuscarPub.class);
				startActivity(iBuscar);
				return true;

			default:
				return super.onOptionsItemSelected(item);
			}
	    }
	
class editarPub extends AsyncTask<ArrayList<String>, String, JSONObject>{
		
		@Override
		public void onPreExecute(){
			super.onPreExecute();
			pDialogo=new ProgressDialog(EditPubicacion.this);
			pDialogo.setMessage("Guardando cambios...");
			pDialogo.setIndeterminate(false);
            pDialogo.setCancelable(false);
            pDialogo.show();
		}

		@Override
		protected JSONObject doInBackground(ArrayList<String>... params) {
			
			ArrayList<String> passed = new ArrayList<String>();
			passed=params[0];
			JSONObject json=userFunction.editarPub(getApplicationContext(), passed.get(0), passed.get(1), passed.get(2), passed.get(3), passed.get(4));
			
			
			return json;
		}
		
		@Override
		protected void onPostExecute(JSONObject json){
			pDialogo.dismiss();
			String error;
			String cod_publicacion;
			String mensaje="";
			int duration = Toast.LENGTH_SHORT;
			try {
				error = json.getString("error");
				if((error.compareTo("0"))==0){
					cod_publicacion=json.getString("cod_publicacion");
					mensaje="Edicion exitosa!";
					Intent i=new Intent(getApplicationContext(),DetallePublicacion.class);
					i.putExtra("cod_publicacion", cod_publicacion);
					startActivity(i);
					EditPubicacion.this.finish();
				}
				else{
					mensaje=json.getString("error_msg");		
					Toast toast = Toast.makeText(getApplicationContext(), mensaje, duration);
					toast.show();
				}
			} catch (JSONException e) {
				e.printStackTrace();
			}
			
		}
		
		
	}
	
	class GetPublicacion extends AsyncTask<String, String, JSONObject>{
		
		@Override
		public void onPreExecute(){
			super.onPreExecute();
			pDialogo=new ProgressDialog(EditPubicacion.this);
			pDialogo.setMessage("cargando...");
			pDialogo.setIndeterminate(false);
            pDialogo.setCancelable(false);
            pDialogo.show();
		}

		@Override
		protected JSONObject doInBackground(String... params) {
			String cod_pub=params[0];
			JSONObject json=userFunction.getPub(getApplicationContext(), cod_pub);
			return json;
		}
		
		@Override
		protected void onPostExecute(JSONObject json){
			pDialogo.dismiss();
			String error;
			String mensaje="";
			int duration = Toast.LENGTH_SHORT;
			try {
				error = json.getString("error");
				if((error.compareTo("0"))==0){
					json=json.getJSONObject("publicacion"); 
					
					txv_titulo.setText(json.getString("titulo"));
					txv_precio.setText(json.getString("precio"));
					txv_descripcion.setText(json.getString("descripcion"));
					txv_direccion.setText(json.getString("direccion"));
				}
				else{
					mensaje=json.getString("error_msg");		
					Toast toast = Toast.makeText(getApplicationContext(), mensaje, duration);
					toast.show();
				}
			} catch (JSONException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
		
		
	}
	
	class GetImage extends AsyncTask<String, String, Bitmap>{

		@Override
		protected Bitmap doInBackground(String... params) {
			String cod_pub=params[0];
			Bitmap bitmap=userFunction.loadImageFromUrl(cod_pub);
			
			return bitmap;
		}
		
		@Override
		protected void onPostExecute(Bitmap bitmap){
			if(bitmap!=null){
				imgView.setImageBitmap(bitmap);
			}
		}
		
		
	}

}
